//
//  HttpClient.h
//  AFNetworking
//
//  Created by liusanchun on 14-1-12.
//  Copyright (c) 2014年 liusanchun. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface HttpClient : NSObject

@property (strong, nonatomic) NSMutableDictionary *httpHeaders;

/**
 *  获取自身实例
 *
 *  @return 实例对象
 */
+ (HttpClient*)shareInstance;

/**
 *  添加HTTPHeader
 *
 *  @param value HTTPHeader值
 *  @param field HTTPHeader键
 */
- (void)addValue:(NSString*)value forHTTPHeaderField:(NSString *)field;


/**
 *  发起HTTP POST请求
 *
 *  @param url        请求URL地址
 *  @param timeout    请求超时时间
 *  @param parameters 请求参数
 *  @param success    成功回调
 *  @param failure    失败回调
 */
- (void)sendPostRequest:(NSString*)url
                Timeout:(int)timeout
             Parameters:(NSMutableDictionary*)parameters
                Success:(void(^)(id result))success
                Failure:(void(^)(NSString* message, NSError* error))failure;
/**
 *  HTTP请求
 *
 *  @param url        请求地址
 *  @param parameters 参数
 *  @param method     请求方法
 *  @param success    成功回调
 *  @param failure    失败回调
 */
- (void)sendRequest:(NSString*)url
         Parameters:(NSMutableDictionary*)parameters
            Timeout:(int)timeout
             Method:(NSString*)method
            Success:(void(^)(id result))success
            Failure:(void(^)(NSString* message, NSError* error))failure;

/**
 *  文件下载
 *
 *  @param url      下载地址
 *  @param savePath 文件存储路径
 *  @param success  成功回调
 *  @param failure  失败回调
 */
- (void)downloadRequest:(NSString*)url
               SavePath:(NSString*)savePath
                Success:(void(^)(id result))success
                Failure:(void(^)(NSString* message, NSError* error))failure;

/**
 *  文件上传
 *
 *  @param url          上传地址
 *  @param fromPath     文件本地路径
 *  @param parameters   参数
 *  @param success      成功回调
 *  @param failure      失败回调
 */
- (void)uploadRequest:(NSString*)url
             FileData:(NSData*)fileData
           Parameters:(NSMutableDictionary*)parameters
              Success:(void(^)(id result))success
              Failure:(void(^)(NSString* message, NSError* error))failure;

@end
